package redes.common.pacotes;


public class Dados implements Comparable {
	
	private String origem;
	private String destino;
	private String tipo;
	private String sequencia;
	private String cliente;
	private int tamanhoDados;
	private String dados;
	private String crc;
	
	public Dados() {
		super();
	}

	public String getOrigem() {
		return origem;
	}
	public void setOrigem(String origem) {
		this.origem = origem;
	}
	public String getDestino() {
		return destino;
	}
	public void setDestino(String destino) {
		this.destino = destino;
	}
	public String getTipo() {
		return tipo;
	}
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	public String getsequencia() {
		return sequencia;
	}
	public void setsequencia(String sequencia) {
		this.sequencia = sequencia;
	}
	public String getCliente() {
		return cliente;
	}
	public void setCliente(String cliente) {
		this.cliente = cliente;
	}
	public String getCrc() {
		return crc;
	}
	public void setCrc(String crc) {
		this.crc = crc;
	}

	public int getTamanhoDados() {
		return tamanhoDados;
	}

	public void setTamanhoDados(int tamanhoDados) {
		if(tamanhoDados <= 50){
			this.tamanhoDados = tamanhoDados;
		}else{
			throw new IllegalArgumentException("Tamanho nao pode ser superior a 50!");
		}
	}

	/**
	 * @param origem
	 * @param destino
	 * @param tipo
	 * @param sequencia
	 * @param cliente
	 * @param dados
	 * @param crc
	 */
	public Dados(String origem, String destino, String tipo, String sequencia,
			String cliente, String dados, String crc) throws IllegalArgumentException{
		super();
		this.origem = origem;
		this.destino = destino;
		this.tipo = tipo;
		this.sequencia = sequencia;
		this.cliente = cliente;
		this.dados = dados;
		this.crc = crc;
		setTamanhoDados( dados.length());
	}

	public String getDados() {
		return dados;
	}

	public void setDados(String dados) {
		this.dados = dados;
	}
	
	public String toString(){
		StringBuffer retorno = new StringBuffer();
		retorno.append(origem);
		retorno.append("~");
		retorno.append(destino);
		retorno.append("~");
		retorno.append(tipo);
		retorno.append("~");
		retorno.append(sequencia);
		retorno.append("~");
		retorno.append(cliente);
		retorno.append("~");		
		retorno.append(tamanhoDados);
		retorno.append("~");
		retorno.append(dados);
		retorno.append("~");
		retorno.append(crc);
		return retorno.toString();
	}	
	
	public Dados(String tudoJunto){
		String[] aux = tudoJunto.split("\\~");
		origem 		=aux[0];		
		destino	 	=aux[1];
		tipo       	=aux[2];
		sequencia =aux[3];
		cliente = aux[4];
		tamanhoDados = Integer.parseInt(aux[5]);
		dados =aux[6];
		crc        		=aux[7];
	}

	@Override
	public int compareTo(Object o) {
		Dados dados = (Dados) o;
		if(Integer.valueOf(this.getsequencia()) > Integer.valueOf(dados.getsequencia())){
			return 1;
		}else if(Integer.valueOf(this.getsequencia()) == Integer.valueOf(dados.getsequencia())){
			return 0;
		}else{
			return -1;
		}
	}	

}
